/***************************************************************************

Copyright (c) Microsoft Corporation. All rights reserved.
This code is licensed under the Visual Studio SDK license terms.
THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.

***************************************************************************/

using System;
using System.Collections;
using System.Linq;
using System.Reflection;
using System.Text;
using Microsoft.VisualStudio.Shell.Interop;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VsSDK.UnitTestLibrary;
using SolutionSettings;

namespace SolutionSettings_UnitTests {
    [TestClass()]
    public class PackageTest {
        MockActivityLog ActivityLog;
        OleServiceProvider ServiceProvider;
        
        [TestInitialize()]
        public void PackageTestInitialize() {
            ActivityLog = new MockActivityLog();
            ServiceProvider = OleServiceProvider.CreateOleServiceProviderWithBasicServices();

            ServiceProvider.AddService(typeof(SVsActivityLog), ActivityLog, false);
        }

        [TestMethod()]
        public void CreateInstance() {
            SolutionSettingsPackage package = new SolutionSettingsPackage();
        }

        [TestMethod()]
        public void IsIVsPackage() {
            SolutionSettingsPackage package = new SolutionSettingsPackage();
            Assert.IsNotNull(package as IVsPackage, "The object does not implement IVsPackage");
        }

        [TestMethod()]
        public void SetSite() {
            // Create the package
            IVsPackage package = new SolutionSettingsPackage() as IVsPackage;
            Assert.IsNotNull(package, "The object does not implement IVsPackage");

            // Site the package
            Assert.AreEqual(0, package.SetSite(ServiceProvider), "SetSite did not return S_OK");
            
            // Unsite the package
            Assert.AreEqual(0, package.SetSite(null), "SetSite(null) did not return S_OK");
        }
    }
}
